The field of the invention is medical imaging systems, and particularly, systems for developing software applications for such imaging systems.
There are many types of medical imaging systems. The primary distinction between the different systems is the medical imaging modality that is used, such as, x-ray, magnetic resonance, ultrasound or nuclear. In addition, a broad range of capabilities and features are typically offered in each imaging modality. For example, a magnetic resonance imaging (xe2x80x9cMRIxe2x80x9d) system may be offered with a range of polarizing magnetic strengths and configurations and with a range of different optional features such as magnetic resonance angiography (xe2x80x9cMRAxe2x80x9d), cardiac imaging and functional magnetic resonance imaging (xe2x80x9cfMRIxe2x80x9d).
Despite the many differences, medical imaging systems have a number of basic functions in common. All medical imaging systems include an operator interface which enables a particular image acquisition to be prescribed, a data acquisition apparatus which uses one of the imaging modalities to acquire data from the subject, an image reconstruction processor for reconstructing an image using acquired data, and storage apparatus for storing images and associated patient information. Typically, hardware is designed to carry out these functions and system software is designed and written for each hardware configuration.
A medical imaging system contains application programs which direct the imaging system to perform particular types of scans, image reconstructions and post processing applications. For example, an MRI system may include application software which directs the imaging system to perform a fast spin-echo scan, or a fast gradient-recalled echo scan, or a functional MRI scan, or a cardiac cine scan. The application software also directs the imaging system to reconstruct images from acquired data. Typically, a medical imaging system will include software programs to reconstruct one or more images from a set of acquired data, wherein the example, either stationary skeletal or tissue images, or images of blood flow through a body.
In each of these systems, pulse waveforms, sequencing including RF and gradient waveform synchronization, slice control, and other sequencing functions, and signal acquisition control is achieved by programming the system using conditional logic structures, typically with a high level language such as C, C++, Java or other common programming languages. While these types of programming methods are well-suited to computer scientists and other professionals, the MR physicists responsible for programming pulse sequences on MRI systems are generally not trained in programming, but rather to design diagnostic imaging applications by changing pulses, pulse parameters, and the order in which the pulses are played for different parts of K-space. Therefore, MR physicists typically must be trained to program pulse sequences on the job. Presently, the average time for MR physicists to become proficient in pulse sequence design is said to be around two years. Even after this training period, MR physicists often make mistakes or introduce software bugs in this part of MR Image acquisition applications. Because of the need to program these pulse sequences, typical MR systems therefore waste time and efficiency.
Problems associated with sequence programming are, rather than diminishing, becoming increasingly acute as pulse sequences and acquisition methods become increasingly fast and increasingly complex. As a result of increased complexity, it is also becoming increasingly challenging to keep track of the various synchronization points between RF and gradient waveforms and control packets and, further, to change these parameters depending on the image acquisition protocol state. Currently, an application often switches pulse segments being played (in both number and order) based on current xe2x80x98phase encodexe2x80x99, current xe2x80x98slicexe2x80x99, current xe2x80x98number of excitationxe2x80x99 or current acquisition, and any combination of these states. When more demanding control tasks (e.g., cardiac and respiratory gating/compensation sequencing logic) are added, the complexity of the design is increased quickly. These sequences, therefore, are difficult and time consuming to program correctly, and to monitor to determine whether the programming has been accomplished correctly.
Furthermore, as the number of applications grows, the amount and complexity of the application software code becomes increasingly difficult to maintain. As a result, the addition of new applications to the imaging system becomes increasingly difficult. Furthermore, because of the difficulty of writing and compiling application software, it is extremely difficult for users of medical imaging systems to experiment with new methods of scanning and particularly, of reconstructing data. To modify the scan and reconstruction procedures, trained programmers and a significant degree of down time of the machine can be required.
The present invention is a method for programming a medical imaging scan sequence in k-space. A user is provided with an interface including a graphic view of k-space for a medical imaging scan illustrating a plurality of case-based trajectories in the k-space. Canned program parameters are assigned to executable sequence description components to provide conditional data directing the flow of logic for sequencing the traversal of k-space. The method can be used to program the events for traversing k-space, or to modify events.
A general object of the invention is to provide a method for programming a sequence description for traversing k-space in a medical imaging system, wherein object data is assigned to each of a plurality of executable sequence description components which define a sequence of events for traversing of k-space. The object data is stored in a class diagram table which provides an ordered list of pulse sequences to be performed in run time.
Preferably, the application development system comprises a series of predefined, executable code segments with defined input and output links. The executable code segments can be dragged and dropped onto a graphic building area, and linked together graphically through the connection points to provide application code, which is serialized and downloaded to application specific processors for execution. The graphic building area comprises a plurality of icons which can be easily linked together with a mouse or other input device, thereby making construction and compilation of an imaging application or a specific segment of an imaging application very easy.
In addition to providing a simple and easy way to program applications, the graphical building area is particularly suited to the development and manipulation of image reconstruction pipelines. Data processing steps for image reconstruction can be graphically modified in real time to modify or improve both collected and visualized data. During real-time processing of an image, the user can modify various parameters, including filtering and threshold parameters, dynamic range and sampling parameters, image resolution, and data flow control in and out of a reconstruction processing pipeline. After a modification has been made, an indication of a change of process and the programming code for processing the acquired data is serialized and downloaded to a data processing board. The data processing board and/or an associated processor preferably translates the programming code to a low level language such as C or assembly which can operate at an appropriate speed to process real-time data. During real-time data acquisition and processing, therefore, a number of data processing parameters and reconstruction parameters can be modified and forwarded to the processing board to modify or improve data imaging and reconstruction.